VMware Cloud on AWS の SDDC を CLI から操作する
大家好,AWS事業本部の西野です。
VMware Cloud on AWS の SDDC を VMware PowerCLI から操作してみました。
VMware PowerCLI とは
VMware PowerCLI は各種の VMware 製品をコマンドラインから管理・自動化するためのツールです。
VMware PowerCLI が対応しているプロダクトの一覧は以下のページから確認可能です。
本稿においては VMware Cloud on AWS で利用するための手順を確認していきます。
VMware PowerCLI のインストール
PowerCLI のインストール方法については以下のドキュメントに記載があります。
筆者の業務用端末は MacBook なので、ここでは macOS 向けとして Homebrew を使ったオンラインインストール手順を紹介します。
Homebrew の導入手順については割愛するので、こちらのページなどをご参照ください。
PowerShell のインストール
VMware PowerCLI を使用するためには PowerShell が必要です。 以下のコマンドを実行し Homebrew 経由で PowerShell をインストールします。
$ brew install --cask powershell
PowerShell の起動
以下のコマンドを実行し PowerShell を立ち上げます。
$ pwsh PowerShell 7.3.3 PS /Users/nishino.wataru>
PowerCLI のインストール
以下のコマンドレットを実行し VMware PowerCLI をインストールします。
PS /Users/nishino.wataru> Install-Module -Name VMware.PowerCLI
API トークンの取得
VMware PowerCLI から VMware Cloud on AWS の操作をするためには API トークンが必要です。
まずはこれを取得しましょう。
VMware の CSP ポータルにログインし、画面右上部のユーザー名・組織名が書かれている部分をクリックします。
マイアカウント をクリックします。
マイアカウントの画面で API トークン タブをクリックします。
新しい API トークンの生成 をクリックします。
以下のパラメータを入力・選択した後、生成 をクリックします。
- トークン名
- トークンの TTL(有効期限)
- 最短30分から無期限まで設定可能
- トークンに含まれる組織ロールとサービスロール
- OpenID
- チェックを入れると OpenID 準拠トークンを取得可能
- Eメールの設定
- チェックを入れると有効期限が近づいた際にリマインドメールが送信される
実環境で利用する際には最小権限の原則に基づき必要な組織ロール・サービスロールのみを付与するようにしてください。
生成されたトークンが画面上に出てくるので、安全な方法で保存しておきます。
これで準備が完了です。
なお、生成されたトークンに対しては「再生成」および「取り消し」の操作が可能です。
トークンを再生成するとその再生成の時点からふたたび TTL が起算されます。
使ってみた
環境への接続
VMware Cloud on AWS のコマンドレットを使用するためにはまず Connect-VMC コマンドレットで環境へ接続します。
-ApiToken には前項で取得した API トークンをわたしてあげます。
PS /Users/nishino.wataru> Connect-Vmc -ApiToken wq0aEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx Server User ------ ---- vmc.vmware.com nishino.wataru@example.com
AWS アカウント関連の操作
SDDC に関連付けられた AWS アカウントを表示するためには Get-AwsAccount を用います。
PS /Users/nishino.wataru> Get-AwsAccount AccountNumber Username State CFStackName ------------- -------- ----- ----------- 123456789012 vmc_operator@csp.local ACTIVE vmware-sddc-formation-93axxxxx-vvvv-aaaa-9d0 4-ea4e9xxxxxxxx
また、Get-AwsVpcSubnet では対象アカウントの特定リージョンからサブネットの情報を取得できます。
PS /Users/nishino.wataru> Get-AwsVpcSubnet -Region AP_NORTHEAST_1 -AwsAccount 123456789012 AwsVpc CidrBlock IsCompatible ------ --------- ------------ vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16) 172.16.0.0/20 True vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16) 172.16.160.0/20 True vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16) 172.16.144.0/20 True vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16) 172.16.32.0/20 True vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16) 172.16.128.0/20 True vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16) 172.16.16.0/20 True
SDDC の情報取得
Get-VmcSddc では接続した VMware Cloud on AWS 環境に存在する SDDC の情報を取得できます。
PS /Users/nishino.wataru> Get-VmcSddc Name DeploymentState SddcType AccessState AccountLinkState CreatedByU ser ---- --------------- -------- ----------- ---------------- ---------- Classmethod Trial SDDC Ready MultiHost Enabled nishino.wataru@example.com
SDDC の削除
既存の SDDC を削除し、また別の SDDC を作成する手順を試してみます。
まずは Remove-VmcSddc で SDDC を削除します。
PS /Users/nishino.wataru> Remove-VmcSddc -Sddc "Classmethod Trial SDDC" Remove Sddc Perform operation 'Remove' on Sddc 'Classmethod Trial SDDC'? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y Removing SDDC: Classmethod Trial SDDC [percent complete: 0 ]
対象 SDDC の削除が始まっています。しばらく待ちます。
無事削除されました。
SDDC の作成
続いて New-VmcSddc で SDDC の作成をします。
なお、New-VmcSddc で SDDC を作成するためには事前に AWS アカウントとのリンクを行っておく必要があります。当該プロセスについては以下のドキュメントを参照してください。
アカウントのリンクと VMware Cloud on AWS CloudFormation テンプレート
New-VmcSddc にはパラメータの1つとしてAwsVpcSubnet[]
型を渡してあげる必要があるのでまずはその準備をします。
今回は Get-AwsVpcSubnet で確認できるサブネットの中から CIDR ブロックが 172.16.160.0/20 であるもの使おうと思います。これを絞り込み、$awsVpcSubnet 変数に代入しておきます。
PS /Users/nishino.wataru> $awsVpcSubnet = Get-AwsVpcSubnet -Region AP_NORTHEAST_1 -AwsAccount 123456789012 | Where-Object {$_.IsCompatible -eq 'True'} | Where-Object {$_.CidrBlock -eq '172.16.160.0/20'}
うまく代入できているか確認しておきましょう。
PS /Users/nishino.wataru> Write-Output $awsVpcSubnet AwsVpc CidrBlock IsCompatible ------ --------- ------------ vpc-07cdxxxxxxxxxxxxx (172.16.0.0/16) 172.16.160.0/20 True
SDDCと接続する先のサブネットを1つに絞り込めているのでこれで準備完了です。
続けて以下のコマンドレットで新たな SDDC を作成します。SDDC の作成には通常2時間程度要するため、非同期でコマンドレットの処理を終わらせるべく -RunAsync オプションを付与しています。
PS /Users/nishino.wataru> New-VmcSddc -Name "Classmethod Neo Trial SDDC" -Provider Aws -HostCount 2 -Region "AP_NORTHEAST_1" -SddcType MultiHost -HostType "I3" -AwsAccount 123456789012 -AwsVpcSubnet $awsVpcSubnet -RunAsync
SDDC の作成が開始されています。しばらく待ちます。
無事 SDDC の作成が完了しました。
参考ページ
VMwareCloudOnAWS Module | VMware PowerCLI Reference
終わりに
このブログがほんの少しでも世界を良くできれば嬉しいです。
AWS事業本部の西野 (@xiyegen) がお送りしました。